library(DT)
dt <- DT::datatable(iris)
dt

Shiny

library(shiny)

Attaching package: ‘shiny’

The following objects are masked from ‘package:DT’:

    dataTableOutput,
    renderDataTable
fluidPage(
  headerPanel(
    "Shiny dashboard"
  ),
  sidebarLayout(
    # Sidebar with a slider input
    sidebarPanel(
      sliderInput("obs",
                  "Number of observations:",
                  min = 0,
                  max = 1000,
                  value = 500)
    ),

    # Show a plot of the generated distribution
    mainPanel(
      plotly::plot_ly(midwest, x = ~percollege, color = ~state, type = "box")
    )
  )
) |> showTag()
To stop the server, run servr::daemon_stop(3) or restart your R session
Serving the directory /Users/martinl/Github/110-2-interactive-data-visualization/temp at http://127.0.0.1:4321

plotly

tx5 <- jsonlite::fromJSON("https://www.dropbox.com/s/9yxq2g1a5vdywu6/tx5.json?dl=1") |>
  econIDV::as.Data() # this is only for this course to mark the object a data class
library(plotly)
plot_ly(tx5, x = ~date, y = ~median) %>%
  add_lines(linetype = ~city) -> plt
plt
ggplot(tx5, aes(x=date, y=median)) +
  geom_line(aes(linetype=city)) -> gg
gg

names(tx5)
plt <- function()
{plot_ly(tx5, x = ~date, y = ~median) %>%
    add_lines(linetype = ~city) -> plt
  plt}
plt()
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCmVkaXRvcl9vcHRpb25zOiAKICBjaHVua19vdXRwdXRfdHlwZTogaW5saW5lCi0tLQoKYGBge3J9CmxpYnJhcnkocGxvdGx5KQpmaWcgPC0gcGxvdF9seShtaWR3ZXN0LCB4ID0gfnBlcmNvbGxlZ2UsIGNvbG9yID0gfnN0YXRlLCB0eXBlID0gImJveCIpCmZpZwpWaWV3KGZpZykKYGBgCgpgYGB7cn0KbGlicmFyeShsZWFmbGV0KQoKbSA8LSBsZWFmbGV0KCkgJT4lCiAgYWRkVGlsZXMoKSAlPiUgICMgQWRkIGRlZmF1bHQgT3BlblN0cmVldE1hcCBtYXAgdGlsZXMKICBhZGRNYXJrZXJzKGxuZz0xNzQuNzY4LCBsYXQ9LTM2Ljg1MiwgcG9wdXA9IlRoZSBiaXJ0aHBsYWNlIG9mIFIiKQoKbQpWaWV3KG0pCmBgYAoKYGBge3J9CmxpYnJhcnkoRFQpCmR0IDwtIERUOjpkYXRhdGFibGUoaXJpcykKZHQKVmlldyhkdCkKYGBgCgoKYGBge3J9Cmh0bWx3aWRnZXRzOjpzYXZlV2lkZ2V0KCkKaHRtbHRvb2xzOjpzYXZlX2h0bWwoCiAgZmlnLCBmaWxlPSJ0ZW1wL2ZpZy5odG1sIgopCmBgYAoKIyMgU2hpbnkKCmBgYHtyfQpsaWJyYXJ5KHNoaW55KQoKYGBgCgpgYGB7cn0KZmx1aWRQYWdlKAogIGhlYWRlclBhbmVsKAogICAgIlNoaW55IGRhc2hib2FyZCIKICApLAogIHNpZGViYXJMYXlvdXQoCiAgICAjIFNpZGViYXIgd2l0aCBhIHNsaWRlciBpbnB1dAogICAgc2lkZWJhclBhbmVsKAogICAgICBzbGlkZXJJbnB1dCgib2JzIiwKICAgICAgICAgICAgICAgICAgIk51bWJlciBvZiBvYnNlcnZhdGlvbnM6IiwKICAgICAgICAgICAgICAgICAgbWluID0gMCwKICAgICAgICAgICAgICAgICAgbWF4ID0gMTAwMCwKICAgICAgICAgICAgICAgICAgdmFsdWUgPSA1MDApCiAgICApLAoKICAgICMgU2hvdyBhIHBsb3Qgb2YgdGhlIGdlbmVyYXRlZCBkaXN0cmlidXRpb24KICAgIG1haW5QYW5lbCgKICAgICAgcGxvdGx5OjpwbG90X2x5KG1pZHdlc3QsIHggPSB+cGVyY29sbGVnZSwgY29sb3IgPSB+c3RhdGUsIHR5cGUgPSAiYm94IikKICAgICkKICApCikgLT4gdWkgCgp1aSB8PiBzaG93VGFnKCkKYGBgCgoKIyMgcGxvdGx5CgoKYGBge3J9CnR4NSA8LSBqc29ubGl0ZTo6ZnJvbUpTT04oImh0dHBzOi8vd3d3LmRyb3Bib3guY29tL3MvOXl4cTJnMWE1dmR5d3U2L3R4NS5qc29uP2RsPTEiKSB8PgogIGVjb25JRFY6OmFzLkRhdGEoKSAjIHRoaXMgaXMgb25seSBmb3IgdGhpcyBjb3Vyc2UgdG8gbWFyayB0aGUgb2JqZWN0IGEgZGF0YSBjbGFzcwpgYGAKCgpgYGB7cn0KbGlicmFyeShwbG90bHkpCnBsb3RfbHkodHg1LCB4ID0gfmRhdGUsIHkgPSB+bWVkaWFuKSAlPiUKICBhZGRfbGluZXMobGluZXR5cGUgPSB+Y2l0eSkgLT4gcGx0CnBsdApgYGAKCgpgYGB7cn0KZ2dwbG90KHR4NSwgYWVzKHg9ZGF0ZSwgeT1tZWRpYW4pKSArCiAgZ2VvbV9saW5lKGFlcyhsaW5ldHlwZT1jaXR5KSkgLT4gZ2cKZ2cKYGBgCgpgYGB7cn0KbmFtZXModHg1KQpgYGAKCmBgYHtyfQpteWZvcm11bGEgPSB+ICB2b2x1bWUqbWVkaWFuCm1vZGVsLmZyYW1lKG15Zm9ybXVsYSwgdHg1KSAtPiBtYXQwClZpZXcobWF0MCkKYGBgCgpgYGB7cn0KcGx0IDwtIGZ1bmN0aW9uKCkKe3Bsb3RfbHkodHg1LCB4ID0gfmRhdGUsIHkgPSB+bWVkaWFuKSAlPiUKICAgIGFkZF9saW5lcyhsaW5ldHlwZSA9IH5jaXR5KSAtPiBwbHQKICBwbHR9CmBgYAoKYGBge3J9CnBsdCgpCmBgYAoKCgoKCg==